// 引入发送请求的工具
import API from '@/api'
import {Message} from 'element-ui'
import {
    LOGIN,
    LOGOUT
} from '../mutation-types'
// 包含多个状态数据的对象
// 获取本地存储的数据
const getItem = JSON.parse(sessionStorage.getItem('vuex'))
const userInfo = getItem  ? getItem.userInfo : {}
const state = {
    // 用户信息
    userInfo
}
// 包含多个间接修改状态数据的方法(异步)
const actions = {
    // 用户手机号及密码
    async login({commit}, data) {
        let result = await API.login.login(data)
        if (result.code !== 200) {
            Message.error(result.msg || '密码错误')
            return
        }
        commit(LOGIN, result)
    },
    // 退出登录
    async logout({commit}) {
        await API.login.logout()
        // 清除数据
        commit(LOGOUT)
    }
}
// 包含多个直接修改状态数据的方法(同步)
const mutations = {
    [LOGIN](state, data) {
        state.userInfo = data.profile
    },
    [LOGOUT](state) {
        state.userInfo = {}
    }
}
// 包含了多个状态数据计算属性的对象(只有get方法)
const getters = {}

// 模块名 === 创建的js文件名字
// state, // this.$store.state.模块名.键名
// actions, // this.$store.dispatch('模块名/getUsers', this.user)
// mutations, // this.$store.commit('模块名/getUsers', this.user)
// getters // this.$store.getters['模块名/demo']

export default {
    namespaced: true,  // 开启命名空间
    state,
    actions,
    mutations,
    getters
}
